// //登录成功返回信息
// export interface LoginInfo {
//   id?: number,
//   name?: string,
//   username?: string,
//   token?: string
// }


// ---------------------- 基础响应类型 ----------------------
export interface BaseResponse<T = unknown> {
  code: string;     // 状态码 (如 "100" 表示成功)
  message: string;  // 提示信息
  data: T;          // 返回数据
}

// ---------------------- 登录信息类型 ----------------------
export interface LoginInfo {
  token?: string;   // 登录凭证
  mobile?: string;  // 手机号
  // 可以根据需要添加其他用户信息字段
}

// ---------------------- 短信验证相关 ----------------------
// 发送短信验证码参数
export interface SendSmsParams {
  mobile: string;
}

// 验证短信验证码参数
export interface VerifySmsParams {
  mobile: string;
  code: string;
}

// ---------------------- 登录相关 ----------------------
// 登录请求参数
export interface LoginParams {
  mobile: string;
  code: string;
}

// 登录响应数据
export interface LoginResponseData {
  token: string;
  user: {
    user: UserInfo;
    roleList: RoleInUser[];
    permissionList: PermissionInfo[];
  };
}

// ---------------------- 文件上传 ----------------------
// 文件上传响应数据
export interface UploadResponseData {
  file: {
    uid: string;      // 文件唯一ID
    filename: string; // 文件名
    extname: string;  // 文件扩展名
    url: string;      // 文件访问URL
  };
}

// 上传参数
export interface UploadParams {
  uploadFile: File; // 要上传的文件
}

// ---------------------- 角色管理 ----------------------
// 角色列表项
export interface RoleListItem {
  id: number;
  roleName: string;
  type: string;
  memberCount: number;
}

// 添加角色参数
export interface AddRoleParams {
  roleName: string;
  permissionList?: string; // JSON格式的权限Code列表
}

// 编辑角色参数
export interface EditRoleParams {
  id: string;
  roleName: string;
  permissionList?: string; // 新的权限Code列表
}

// 删除角色参数
export interface DeleteRoleParams {
  id: string;
}

// ---------------------- 账号（用户）管理 ----------------------
// 添加管理员账号参数
export interface AddAdminUserParams {
  userName: string;
  roleID: string;
  mobile: string;
  avatar?: string;
}

// 查看管理员账号参数
export interface ViewAdminUserParams {
  id: string;
}

// 账号列表项中的角色信息
export interface RoleInUser {
  id: number;
  roleName: string;
  type: string;
}

// 查看管理员账号响应数据
export interface ViewAdminUserResponseData {
  id: number;
  userType: string;
  mobile: string;
  userName: string;
  nickname: string;
  avatar: string | null;
  status: string;
  createdAt: string;
  updatedAt: string | null;
  deletedAt: string | null;
  roleList: RoleInUser[];
}

// 删除用户参数
export interface DeleteUserParams {
  id: string;
}

// 启用/禁用账号参数
export interface ChangeUserStatusParams {
  id: string;
  status: string; // 启用/停用
}

// 账户分页列表参数
export interface GetAdminListByPageParams {
  page?: string;
  pageSize?: string;
  orderBy?: string; // JSON格式: {"field":"createdAt","order":"descend"}
  roleID?: string;
  keyword?: string;
}

// 账户分页列表项
export interface AdminUserListItem {
  id: number;
  userType: string;
  mobile: string;
  userName: string;
  nickname: string;
  avatar: string | null;
  status: string;
  createdAt: string;
  updatedAt: string | null;
  deletedAt: string | null;
  roleList: RoleInUser[];
}

// 账户分页列表响应数据
export interface GetAdminListByPageResponseData {
  pageData: {
    total: number;
    pageSize: number;
    totalPage: number;
    page: number;
    startIdx: number;
    endIdx: number;
    offset: number;
    list: AdminUserListItem[];
  };
}

// 账户下拉列表项
export interface UserDropdownItem {
  id: number;
  userType: string | null;
  mobile: string;
  userName: string;
  nickname: string | null;
  avatar: string | null;
  status: string | null;
  createdAt: string | null;
  updatedAt: string | null;
  deletedAt: string | null;
}

// ---------------------- 当前登录用户信息 ----------------------
// 登录用户信息
export interface UserInfo {
  id: number;
  userType: string;
  mobile: string;
  userName: string;
  nickname: string;
  avatar: string | null;
  status: string;
  createdAt: string;
  updatedAt: string | null;
  deletedAt: string | null;
}

// 权限信息
export interface PermissionInfo {
  id: number | null;
  roleId: number | null;
  permissionCode: string;
  permissionName: string;
  createdAt: string | null;
}

// 获取登录用户信息响应数据
export interface GetLoginUserInfoResponseData {
  user: UserInfo;
  roleList: RoleInUser[];
  permissionList: PermissionInfo[];
}

// 编辑登录用户信息参数
export interface EditLoginUserInfoParams {
  userName: string;
  avatar?: string;
  oldMobile?: string;
  oldMobileCode?: string;
  newMobile?: string;
  newMobileCode?: string;
}

// 编辑管理员用户参数
export interface EditAdminUserParams {
  id: string;
  userName: string;
  roleID: string;
  avatar?: string;
  oldMobile?: string;      // 旧手机号码
  oldMobileCode?: string;  // 旧手机验证码
  newMobile?: string;
  newMobileCode?: string;
}

// FormData参数类型
export type FormDataParams = FormData | EditLoginUserInfoParams;

// ---------------------- 日志管理 ----------------------

// 日志列表单条数据
export interface LogListItem {
  id: number;
  type: string; // 日志类型：操作日志/登录日志
  userId: number;
  userName: string;
  userMobile: string;
  userAvatar: string;
  address: string;
  ip: string;
  operateModule: string;
  operate: string;
  createdAt: string;
}

// 日志分页列表返回
export interface GetLogListByPageResponseData {
  total: number;
  pageSize: number;
  totalPage: number;
  page: number;
  startIdx: number;
  endIdx: number;
  offset: number;
  list: LogListItem[];
}

// 操作日志-模块下拉返回
export type GetModuleDropdownListResponseData = string[];

// 日志-列表参数
export interface GetLoginLogListByPageParams {
  page: string;
  pageSize: string;
  orderBy?: string;
  startDate?: string;
  endDate?: string;
  keyword?: string;
}

export interface GetOptLogListByPageParams extends GetLoginLogListByPageParams {
  module?: string;
}
